package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * Java DataBase Connectivity (JDBC java数据库连接)
 * JDBC是一套标准的接口，让我们可以以标准的API调用来操作不同的数据库。
 * 不同的数据库提供商都提供了一套JDBC的实现类，这套实现类被称为驱动。
 */
public class JDBCDemo1 {
    public static void main(String[] args) throws Exception {
        /*
            使用JDBC操作数据库的大致流程:
            1:加载驱动
            2:通过DriverManager获取数据库连接Connection
            3:通过连接对象Connection获取执行SQL语句对象Statement
            4:通过执行语句对象Statement执行SQL语句
            5:如果执行的是DQL语句，则会得到查询结果集ResultSet
            6:遍历结果集得到查询数据
            7:关闭连接
         */
        //1加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");//不同数据库提供的Driver实现类的包名和类名不一样
        //2建立连接
        Connection conn = DriverManager.getConnection(
                //jdbc:mysql://数据库地址(IP:端口)/数据库名?参数
                "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                "root",
                "root"
        );
        System.out.println("与数据库建立连接!");
        /*
            创建一张userinfo的表
            CREATE TABLE userinfo(
                id INT PRIMARY KEY AUTO_INCREMENT,
                username VARCHAR(32),
                password VARCHAR(32),
                nickname VARCHAR(32),
                age INT(3)
            )
         */
        Statement state = conn.createStatement();
        String sql = "CREATE TABLE userinfo( " +
                     "  id INT PRIMARY KEY AUTO_INCREMENT, " +
                     "  username VARCHAR(32), " +
                     "  password VARCHAR(32), " +
                     "  nickname VARCHAR(32), " +
                     "  age INT(3) " +
                     ")";
        /*
            boolean execute(String sql)
            用于执行SQL语句，返回值表示执行后是否存在查询结果集
            但是Statement对象中有专门用于执行DML和DQL语句的方法，因此
            execute通常用于执行DDL语句
         */
        state.execute(sql);
        System.out.println("创建完毕!");
        conn.close();
    }
}



